package com.xuelang.pipeline.client.resource.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.xuelang.pipeline.client.common.validator.KeyInfoEncrypted;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import java.util.Date;

/**
 * 交付空间DTO
 *
 * @author xiwen.zxg
 * @since 2024/5/15
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ToolChainDTO {
    /**
     * 主键，自增
     */
    private Long id;

    /**
     * 工具编码，更新时必填
     */
    private String code;

    /**
     * 工具类型，1持续集成工具2持续部署工具3代码质量检查工具
     */
    @NotNull(message = "工具类型不能为空")
    private Integer type;

    /**
     * 工具版本，如SonarQube3.1.2，名称加版本号
     */
    @NotEmpty(message = "工具版本不能为空")
    private String version;

    /**
     * 服务地址
     */
    @NotEmpty(message = "服务地址不能为空")
    private String server;

    /**
     * 存储策略，1.RELEASE 2.SNAPSHOT 3.MIXED
     */
    private Integer strategy;

    /**
     * 用户名
     */
    private String username;

    /**
     * 密码
     */
    @KeyInfoEncrypted
    private String password;

    /**
     * 配置信息
     */
    private String configInfo;

    /**
     * 创建人
     */
    private String creatorId;

    /**
     * 创建人名称
     */
    private String creator;

    /**
     * 创建时间
     */
    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /**
     * 更新人ID
     */
    private String updaterId;

    /**
     * 更新时间
     */
    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
    private Date updateTime;


}
